﻿using System;

namespace CSharpConsoleTestSolution.Demo {
    
    /**
     * 类的声明与访问级别
     * 类是一种数据结构，它可以包含数据成员(常量和字段)、
     * 函数成员(方法、属性、事件、索引器、运算符、实例构造函数、静态构造函数和析构函数)以及嵌套类型。
     * 类类型支持继承，继承是一种机制，它使派生类可以对基类进行扩展和专用化。
     * 
     * 10.1类声明
     * class-declaration 是一个tpe-declaration(第9.6节)，它用于声明一个新类。
     *  class-declaration:
     *      [attributes] [class-modifier] [partial]
     *      class identifier
     *      [type-parameter-list] [class-base] [type-parameter-constraints-clauses]
     *      class-body
     *      [;]
     * 
     * A class-declaration 的组成结构如下: 开头是一组可选 attributes(第17章)，
     *                                    然后依次是一组可选 class-modifiers(第10.1.1节)、
     *                                    可选 partial 修饰符、
     *                                    关键字class 和用于命名类的 identifier、
     *                                    可选 type-parameter-list (第10.13 节)、
     *                                    可选cass-base 规范(第10.1.4节)、
     *                                    一组可选 type-parameter-constraints-clauses (第10.1.5 节)、
     *                                    cass-boy(第10.1.6节)，
     *                                    最后是一个分号(可选)
     * 只有提供了 type-parameter-list 后，类声明才可以提供 type-parameter-constraints-clauses。
     * 
     * type-parameter-list 的类声明是一个泛型类声明(generic class declaration)。
     * 此外，任何嵌套在泛型类声明或泛型结构声明中的类本身就是一个泛型类声明，因为必须为包含类型提供类型形参才能创建构造类型.
     * 
     * 10.1.1类修饰符
     * class-declaration 可以根据需要包含一个类修饰符序列:
     *  class-modifiers:
     *      class-modifiers class-modifier
     * class-modifier:
     *      new,
     *      public, protected, internal (class的默认访问级别,项目内可访问),
     *      private (field的默认访问级别, 类里面可访问),
     *      abstract,
     *      sealed (相当于Java的 final, 子类不能继承),  //adj.密封的；未知的
     *      static
     */
    public class P25_class_declaration_access {

        /**
         * 类的声明, 时间: 23:20
         */
        public static void test() {
            Console.WriteLine("1.类的声明与访问级别");
        }
    }
}